﻿using System.Collections.Specialized;
using System.Windows;

namespace HandyControl.Controls;

public class TransferGroup : SimpleItemsControl
{
    protected override void Refresh()
    {
        if (Items.Count > 0)
        {
            foreach (FrameworkElement item in Items)
            {
                item.Style = ItemContainerStyle;
                ItemsHost.Children.Add(item);
            }
        }
    }

    protected override void OnItemTemplateChanged(DependencyPropertyChangedEventArgs e)
    {

    }

    protected override void OnItemContainerStyleChanged(DependencyPropertyChangedEventArgs e)
    {

    }

    protected override DependencyObject GetContainerForItemOverride() => new TransferItem();

    protected override bool IsItemItsOwnContainerOverride(object item) => item is TransferItem;

    protected override void OnItemsChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (ItemsHost == null) return;

        switch (e.Action)
        {
            case NotifyCollectionChangedAction.Add:
                if (e.NewItems != null)
                {
                    if (e.NewItems[0] is FrameworkElement item)
                    {
                        item.Style = ItemContainerStyle;
                        ItemsHost.Children.Insert(e.NewStartingIndex, item);
                    }
                }
                break;
            case NotifyCollectionChangedAction.Remove:
                if (e.OldItems != null)
                {
                    foreach (FrameworkElement item in e.OldItems)
                    {
                        ItemsHost.Children.Remove(item);
                    }
                }
                break;
            case NotifyCollectionChangedAction.Reset:
                ItemsHost.Children.Clear();
                break;
        }
    }
}
